C programs are usually divided into several source files, to improve modularity and to speed program development. (Only the altered functions need to be recompiled.)
By default function identifiers have FILE SCOPE, so the function can be accessed from any point following its declaration in a source file, and from any other source files which provide a suitable declaration*.
Recall that a function 'definition' describes the structure of the function whereas a 'declaration' simply informs the compiler of the types of the function's return value and arguments. A complete function definition involves both the function prototype (the header) and the function body. A function definition also serves as a function declaration. Therefore if the called function's definition precedes the calling function in the source file, then no further declaration is needed.
If, however, a function is called before it is defined in the source file, or if the function is called from a function in another source file, then a declaration must be given. A function is declared simply by giving the prototype followed by a semicolon. It is not necessary to list the names of the formal parameters; only their types. For